package view;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import table.cellrenderer.BetragTableCellRenderer;
import table.tablemodel.KundenUebersichtTableModel;

public class BankView extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JMenuBar bankMenuBar = null;
	private JMenu Anwendungen = null;
	private JMenuItem anlegenKunde = null;
	private JMenuItem anlegenKonto = null;
	private JMenuItem durchfuehrenZahlungen = null;
	private JMenuItem durchfuehrenUeberweisungen = null;
	private JMenuItem anzeigenKontostand = null;
    private JMenuItem anzeigenKontobewegungen = null;
	private JMenuItem ende = null;

	private JTable kundenTable;
	private KundenUebersichtTableModel kundenUebersichtTableModel;


    public BankView() {
        super("Bank-Anwendung - Kunden Übersicht");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        initialize();
    }

    private void initialize() {
        setSize(587, 456);
        setJMenuBar(getBankMenuBar());
        setContentPane(getJContentPane());
    }

    private JMenuBar getBankMenuBar() {
        if (bankMenuBar == null) {
            bankMenuBar = new JMenuBar();
            bankMenuBar.add(getAnwendungen());
        }
        return bankMenuBar;
    }

    private JMenu getAnwendungen() {
        if (Anwendungen == null) {
            Anwendungen = new JMenu();
            Anwendungen.setText("Anwendungen");
            Anwendungen.add(getAnlegenKunde());
            Anwendungen.add(getAnlegenKonto());
            Anwendungen.add(getDurchfuehrenZahlungen());
            Anwendungen.add(getDurchfuehrenUeberweisungen());
            Anwendungen.add(getAnzeigenKontostand());
            Anwendungen.add(getAnzeigenKontobewegungen());
            Anwendungen.add(getEnde());
            Anwendungen.insertSeparator(6);
        }
        return Anwendungen;
    }

    public JMenuItem getAnlegenKunde() {
        if (anlegenKunde == null) {
            anlegenKunde = new JMenuItem();
            anlegenKunde.setText("Kunde anlegen");
        }
        return anlegenKunde;
    }

    public JMenuItem getAnlegenKonto() {
        if (anlegenKonto == null) {
            anlegenKonto = new JMenuItem();
            anlegenKonto.setText("Konto anlegen");
        }
        return anlegenKonto;
    }

    public JMenuItem getDurchfuehrenZahlungen() {
        if (durchfuehrenZahlungen == null) {
            durchfuehrenZahlungen = new JMenuItem();
            durchfuehrenZahlungen.setText("Ein-/Auszahlungen durchführen");
        }
        return durchfuehrenZahlungen;
    }

    public JMenuItem getDurchfuehrenUeberweisungen() {
        if (durchfuehrenUeberweisungen == null) {
            durchfuehrenUeberweisungen = new JMenuItem();
            durchfuehrenUeberweisungen.setText("Überweisungen durchführen");
        }
        return durchfuehrenUeberweisungen;
    }

    public JMenuItem getAnzeigenKontostand() {
        if (anzeigenKontostand == null) {
            anzeigenKontostand = new JMenuItem();
            anzeigenKontostand.setText("Kontostandsübersicht anzeigen");
        }
        return anzeigenKontostand;
    }

    public JMenuItem getAnzeigenKontobewegungen() {
        if (anzeigenKontobewegungen == null) {
            anzeigenKontobewegungen = new JMenuItem();
            anzeigenKontobewegungen.setText("Kontobewegungen anzeigen");
        }
        return anzeigenKontobewegungen;
    }

    public JMenuItem getEnde() {
        if (ende == null) {
            ende = new JMenuItem();
            ende.setText("Beenden");
        }
        return ende;
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(new JScrollPane(getKundenTable()), BorderLayout.CENTER);
        }
        return jContentPane;
    }

	public JTable getKundenTable() {
	    if (kundenTable == null) {
	        kundenTable = new JTable(getKundenUebersichtTableModel());
	        kundenTable.setDefaultRenderer(Double.class, new BetragTableCellRenderer());
	    }
	    return kundenTable;
	}

	public KundenUebersichtTableModel getKundenUebersichtTableModel() {
	    if (kundenUebersichtTableModel == null) {
	        kundenUebersichtTableModel = new KundenUebersichtTableModel();
	    }
	    return kundenUebersichtTableModel;
	}
}
